package comp.movel.ubiqua.model;

import java.io.Serializable;

import android.util.Log;

import comp.movel.ubiqua.bluetooth.Constants;

public class Placar implements Serializable {
	public static final int NUM_MAX_PLACAR = 5;
	private static final long serialVersionUID = -2445488207236687311L;
	public static final int PODE_PASSAR = 0;
	public static final int PODE_REPASSAR = 1;
	public static final int NAO_PODE = 2;
	private int placarJog1, placarJog2;
	private boolean vezJogador1;
	private int idPerguntaCorrente;
	private int passaRepassa;
	
	private String nomeJog1;
	private String nomeJog2;

	public Placar(int idPergunta) {
		placarJog1 = 0;
		placarJog2 = 0;
		vezJogador1 = true;
		idPerguntaCorrente = idPergunta;
		passaRepassa = PODE_PASSAR;
	}

	public void setNomeJogadores (String jog1, String jog2)
	{
		this.nomeJog1 = jog1;
		this.nomeJog2 = jog2;
		
		Log.i(Constants.TAG, "SET Jogadores: "+ this.nomeJog1 + this.nomeJog2);
		
		
	}
	
	public Placar(String[] placarString) throws IndexOutOfBoundsException{
		placarJog1 = Integer.parseInt(placarString[0]);
		placarJog2 = Integer.parseInt(placarString[1]);
		vezJogador1 = Boolean.parseBoolean(placarString[2]);
		idPerguntaCorrente = Integer.parseInt(placarString[3]);
		passaRepassa = Integer.parseInt(placarString[4]);
	}

	public void passar() {
		setVezJogador1(!vezJogador1);
		setPassaRepassa(PODE_REPASSAR);
	}

	public void repassar() {
		setVezJogador1(!vezJogador1);
		setPassaRepassa(NAO_PODE);
	}

	public boolean podePassar() {
		return passaRepassa == PODE_PASSAR;
	}

	public boolean podeRepassar() {
		return passaRepassa == PODE_REPASSAR;
	}

	public int getPlacarJog1() {
		return placarJog1;
	}

	public void pontoJog1() throws FimDeJogoException {
		this.passaRepassa = PODE_PASSAR;
		this.placarJog1++;
		
		Log.i(Constants.TAG, "PLACAR CLASS jog1: Jogadores = " + this.nomeJog1 + this.nomeJog2);
		
		if (placarJog1 == NUM_MAX_PLACAR) {
			Log.i(Constants.TAG, "PLACAR CLASS: Jogadores = " + this.nomeJog1 + this.nomeJog2);
			throw new FimDeJogoException(this);
		}
	}

	public int getPlacarJog2() {
		return placarJog2;
	}

	public void pontoJog2() throws FimDeJogoException {
		this.passaRepassa = PODE_PASSAR;
		this.placarJog2++;
		
		Log.i(Constants.TAG, "PLACAR CLASS jog2: Jogadores = " + this.nomeJog1 + this.nomeJog2);
		
		if (placarJog2 == NUM_MAX_PLACAR) {
			throw new FimDeJogoException(this);
		}
	}
	
	

	public String getNomeJog1() {
		return nomeJog1;
	}

	public void setNomeJog1(String nomeJog1) {
		this.nomeJog1 = nomeJog1;
	}

	public String getNomeJog2() {
		return nomeJog2;
	}

	public void setNomeJog2(String nomeJog2) {
		this.nomeJog2 = nomeJog2;
	}

	public boolean isVezJogador1() {
		return vezJogador1;
	}

	public void setVezJogador1(boolean vezJogador1) {
		this.vezJogador1 = vezJogador1;
	}

	public int getIdPerguntaCorrente() {
		return idPerguntaCorrente;
	}

	public void setIdPerguntaCorrente(int idPerguntaCorrente) {
		this.idPerguntaCorrente = idPerguntaCorrente;
	}

	public int getPassaRepassa() {
		return passaRepassa;
	}

	public void setPassaRepassa(int passaRepassa) {
		this.passaRepassa = passaRepassa;
	}
}
